#include<iostream>
#include<memory>
class Test
{
public:
    Test()
    {
        std::cout<<"构建函数\n";
    }
    ~Test()
    {
        std::cout<<"析构函数\n";
    }
    void show()
    {
      std::cout<<"hello"<<std::endl;  
    }
};


int main()
{
    std::shared_ptr<Test> p=std::make_shared<Test>();
    std::cout<<p.use_count()<<std::endl;
    //共享指针的附庸,不会引起引用计数器的变化
    std::weak_ptr<Test> p2=p;
    //本身弱指针无法调用show函数
    p2.lock()->show();//会返回一个指向该对象的共享指针，如果该对象已经释放，则返回空指针。
    std::cout<<p.use_count()<<std::endl;
    return 0;
}